package com.lld.im.tcp.register;

import org.I0Itec.zkclient.ZkClient;
import org.lld.im.common.constant.Constants;

/**
 * @author: LunBoWang
 * @description: Zkit 类用于注册服务到 ZooKeeper 中。
 * 它提供了一个构造函数，用于初始化 ZkClient。
 * 该类还提供了一个 createRootNode() 方法，用于创建 ZooKeeper 中的根节点。
 * 该类还提供了一个 createNode() 方法，用于创建 ZooKeeper 中的节点。
 * @date: 2025/3/29 下午8:20
 * @version: 1.0
 */

public class Zkit {

    private ZkClient zkClient;

    public Zkit(ZkClient zkClient) {
        this.zkClient = zkClient;
    }

    //im-coreRoot/tcp/ip:port
    public void createRootNode() {
        boolean exists = zkClient.exists(Constants.ImCoreZkRoot);
        if (!exists) {
            zkClient.createPersistent(Constants.ImCoreZkRoot);
        }
        boolean existsTcp = zkClient.exists(Constants.ImCoreZkRoot + Constants.ImCoreZkRootTcp);
        if (!existsTcp) {
            zkClient.createPersistent(Constants.ImCoreZkRoot + Constants.ImCoreZkRootTcp);
        }
        boolean existsWeb = zkClient.exists(Constants.ImCoreZkRoot + Constants.ImCoreZkRootWeb);
        if (!existsWeb) {
            zkClient.createPersistent(Constants.ImCoreZkRoot + Constants.ImCoreZkRootWeb);
        }
    }

    //ip+port
    public void createNode(String path) {
        if (!zkClient.exists(path)) {
            zkClient.createPersistent(path);
        }
    }
}
